﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="AutoMapperSchema" targetNamespace="http://schemas.microsoft.com/dsltools/AutoMapper" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/dsltools/AutoMapper" xmlns:core="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:import id="CoreSchema" namespace="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" />
  <!-- MappingModel -->
  <xsd:element name="mappingModel" type="MappingModel" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MappingModel">
    <xsd:annotation>
      <xsd:documentation>The root in which all other elements are embedded. Appears as a diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: MappingModelHasElements -->
          <xsd:element name="elements" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of MappingModelHasElements</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:choice minOccurs="0" maxOccurs="unbounded" >
                  <xsd:element ref="mappingModelHasElements">
                    <xsd:annotation>
                      <xsd:documentation>[Relationship deriving from MappingModelHasElements needs to be serialized in full-form]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                  <xsd:element ref="typeElement" >
                    <xsd:annotation>
                      <xsd:documentation>[Target role-player]</xsd:documentation>
                    </xsd:annotation>
                  </xsd:element>
                </xsd:choice>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: MappingModelHasMappers -->
          <xsd:element name="mappers" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of MappingModelHasMappers</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="mappingModelHasMappers" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of MappingModelHasMappers needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: MappingModelHasNamespaces -->
          <xsd:element name="namespaces" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of MappingModelHasNamespaces</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="mappingModelHasNamespaces" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of MappingModelHasNamespaces needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- dslVersion -->
        <xsd:attribute name="dslVersion" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Namespace -->
        <xsd:attribute name="namespace" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Define the root namespace for the generation code</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Instrumentation -->
        <xsd:attribute name="instrumentation" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Insert a performance counter in the generated code.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Category -->
        <xsd:attribute name="category" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Category Performance counter if the performance is activated</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: DebuggerStepThrough -->
        <xsd:attribute name="debuggerStepThrough" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Insert a DebuggerStepThroughAttribute on the methods</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: ClassName -->
        <xsd:attribute name="className" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Define the name of the type the automapper class</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingModel Moniker -->
  <xsd:element name="mappingModelMoniker" type="MappingModelMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MappingModelMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MappingModel instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TypeElement -->
  <xsd:element name="typeElement" type="TypeElement" substitutionGroup="core:modelElement" />
  <xsd:complexType name="TypeElement">
    <xsd:annotation>
      <xsd:documentation>Elements embedded in the model. Appear as boxes on the diagram.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: TypeElementHasSMappings -->
          <xsd:element name="sMappings" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of TypeElementHasSMappings</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="typeElementHasSMappings" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of TypeElementHasSMappings needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
          <!-- Relationship: TypeElementHasDMappings -->
          <xsd:element name="dMappings" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of TypeElementHasDMappings</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="typeElementHasDMappings" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of TypeElementHasDMappings needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: AssemblyQualifiedName -->
        <xsd:attribute name="assemblyQualifiedName" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Define the Assembly Qualified Name</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: FullName -->
        <xsd:attribute name="fullName" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Full Name for the type</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Namespace -->
        <xsd:attribute name="namespace" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Namespace for the generated code</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsClass -->
        <xsd:attribute name="isClass" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type if is Class</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsInterface -->
        <xsd:attribute name="isInterface" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is Interface</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsAbstract -->
        <xsd:attribute name="isAbstract" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is  abstract</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsAnsiClass -->
        <xsd:attribute name="isAnsiClass" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is Ansi Class</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsArray -->
        <xsd:attribute name="isArray" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is Array</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsEnum -->
        <xsd:attribute name="isEnum" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is Enum</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsNested -->
        <xsd:attribute name="isNested" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is Nested</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsPublic -->
        <xsd:attribute name="isPublic" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is public</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsSealed -->
        <xsd:attribute name="isSealed" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is sealed</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsSerializable -->
        <xsd:attribute name="isSerializable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is serializable</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: ContainsEmptyConstructor -->
        <xsd:attribute name="containsEmptyConstructor" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type for Empty Constructor</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Name of the type</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsEnumerable -->
        <xsd:attribute name="isEnumerable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information form the type is Enumerable</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsValueType -->
        <xsd:attribute name="isValueType" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information from the type : IsValueType</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsNullable -->
        <xsd:attribute name="isNullable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: ItemType -->
        <xsd:attribute name="itemType" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Information from type type from the IEnumerable</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TypeElement Moniker -->
  <xsd:element name="typeElementMoniker" type="TypeElementMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="TypeElementMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TypeElement instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Mapper -->
  <xsd:element name="mapper" type="Mapper" substitutionGroup="core:modelElement" />
  <xsd:complexType name="Mapper">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: MapperHasItemMaps -->
          <xsd:element name="itemMaps" minOccurs="0" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instances of MapperHasItemMaps</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="mapperHasItemMaps" minOccurs="0" maxOccurs="unbounded">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of MapperHasItemMaps needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" use="required" >
          <xsd:annotation>
            <xsd:documentation>Name of the mapper</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: MapMethodName -->
        <xsd:attribute name="mapMethodName" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Define the name of the method</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: CustomConstructor -->
        <xsd:attribute name="customConstructor" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>delegate the contructor from the target in a custom method.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: ExecuteMethodAfterCast -->
        <xsd:attribute name="executeMethodAfterCast" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Can call method after the map</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: ExecuteMethodBeforeCast -->
        <xsd:attribute name="executeMethodBeforeCast" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Can call method beafore the map</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Kind -->
        <xsd:attribute name="kind" type="Kind" >
          <xsd:annotation>
            <xsd:documentation>the generation for this mapper is by passed</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: ReferenceMultiple -->
        <xsd:attribute name="referenceMultiple" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>the source object can be multiple reference</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: CustomConstructorMethodName -->
        <xsd:attribute name="customConstructorMethodName" type="xsd:string" />
        <!-- Property: TypeSource -->
        <xsd:attribute name="typeSource" type="xsd:string" />
        <!-- Property: TypeDestination -->
        <xsd:attribute name="typeDestination" type="xsd:string" />
        <!-- Property: IndexProperty -->
        <xsd:attribute name="indexProperty" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>use a property from the source instance for indexing the object in the Hashtable</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Generate -->
        <xsd:attribute name="generate" type="xsd:boolean" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Mapper Moniker -->
  <xsd:element name="mapperMoniker" type="MapperMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MapperMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for Mapper instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="name" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ItemMap -->
  <xsd:element name="itemMap" type="ItemMap" substitutionGroup="core:modelElement" />
  <xsd:complexType name="ItemMap">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceName -->
        <xsd:attribute name="sourceName" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Name of the source Member</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetName -->
        <xsd:attribute name="targetName" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Name of the target member</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Label -->
        <xsd:attribute name="label" type="xsd:string" />
        <!-- Property: SourceType -->
        <xsd:attribute name="sourceType" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Type of the source member</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetType -->
        <xsd:attribute name="targetType" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Type of the target member</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TypeCast -->
        <xsd:attribute name="typeCast" type="CastType" >
          <xsd:annotation>
            <xsd:documentation>Type from cast</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Cast -->
        <xsd:attribute name="cast" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Define the type used if you have choose a IValueConverter</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Enable -->
        <xsd:attribute name="enable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>define if the item is enabled.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: NeedMap -->
        <xsd:attribute name="needMap" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information computed for information if the copy need a convertion</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsPrimitive -->
        <xsd:attribute name="sourceIsPrimitive" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsClass -->
        <xsd:attribute name="sourceIsClass" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsInterface -->
        <xsd:attribute name="sourceIsInterface" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsAbstract -->
        <xsd:attribute name="sourceIsAbstract" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsAnsiClass -->
        <xsd:attribute name="sourceIsAnsiClass" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsArray -->
        <xsd:attribute name="sourceIsArray" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsEnum -->
        <xsd:attribute name="sourceIsEnum" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsNested -->
        <xsd:attribute name="sourceIsNested" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsPublic -->
        <xsd:attribute name="sourceIsPublic" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsSealed -->
        <xsd:attribute name="sourceIsSealed" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsSerializable -->
        <xsd:attribute name="sourceIsSerializable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsEnumerable -->
        <xsd:attribute name="sourceIsEnumerable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: IsRecursif -->
        <xsd:attribute name="isRecursif" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>the type is recursif</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsValueType -->
        <xsd:attribute name="sourceIsValueType" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceIsNullable -->
        <xsd:attribute name="sourceIsNullable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property source</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsPrimitive -->
        <xsd:attribute name="targetIsPrimitive" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsClass -->
        <xsd:attribute name="targetIsClass" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsInterface -->
        <xsd:attribute name="targetIsInterface" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsAbstract -->
        <xsd:attribute name="targetIsAbstract" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsAnsiClass -->
        <xsd:attribute name="targetIsAnsiClass" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsArray -->
        <xsd:attribute name="targetIsArray" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsEnum -->
        <xsd:attribute name="targetIsEnum" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsNested -->
        <xsd:attribute name="targetIsNested" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsPublic -->
        <xsd:attribute name="targetIsPublic" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsSealed -->
        <xsd:attribute name="targetIsSealed" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsSerializable -->
        <xsd:attribute name="targetIsSerializable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsEnumerable -->
        <xsd:attribute name="targetIsEnumerable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsValueType -->
        <xsd:attribute name="targetIsValueType" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetIsNullable -->
        <xsd:attribute name="targetIsNullable" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Information on the type property target</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceTypeMember -->
        <xsd:attribute name="sourceTypeMember" type="MemberTypeEnum" />
        <!-- Property: TargetTypeMember -->
        <xsd:attribute name="targetTypeMember" type="xsd:string" />
        <!-- Property: CustomMethodName -->
        <xsd:attribute name="customMethodName" type="xsd:string" />
        <!-- Property: NullPolicy -->
        <xsd:attribute name="nullPolicy" type="PolicyNullValue" >
          <xsd:annotation>
            <xsd:documentation>define the policy if the the source value is null</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: SourceItemType -->
        <xsd:attribute name="sourceItemType" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Information from type type from the IEnumerable</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: TargetItemType -->
        <xsd:attribute name="targetItemType" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Information from type type from the IEnumerable</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: CastReturnCustomMethod -->
        <xsd:attribute name="castReturnCustomMethod" type="xsd:boolean" >
          <xsd:annotation>
            <xsd:documentation>Cast the return object in target type</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: ConditionnalMappingMethod -->
        <xsd:attribute name="conditionnalMappingMethod" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>if the value is not empty, a method is called for include the property in the map.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- ItemMap Moniker -->
  <xsd:element name="itemMapMoniker" type="ItemMapMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="ItemMapMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for ItemMap instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- UsingNamespace -->
  <xsd:element name="usingNamespace" type="UsingNamespace" substitutionGroup="core:modelElement" />
  <xsd:complexType name="UsingNamespace">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Fullname -->
        <xsd:attribute name="fullname" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Define à new namespace for importe types.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- UsingNamespace Moniker -->
  <xsd:element name="usingNamespaceMoniker" type="UsingNamespaceMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="UsingNamespaceMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for UsingNamespace instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingSource -->
  <xsd:element name="mappingSource" type="MappingSource" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MappingSource">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: MappingSourceReferencesMapper -->
          <xsd:element name="mapper" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instance of MappingSourceReferencesMapper</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="mappingSourceReferencesMapper" minOccurs="1" maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of MappingSourceReferencesMapper needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" use="required" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingSource Moniker -->
  <xsd:element name="mappingSourceMoniker" type="MappingSourceMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MappingSourceMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MappingSource instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="name" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingDestination -->
  <xsd:element name="mappingDestination" type="MappingDestination" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MappingDestination">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Relationship: MappingDestinationReferencesMapper -->
          <xsd:element name="mapper" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>Instance of MappingDestinationReferencesMapper</xsd:documentation>
            </xsd:annotation>
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element ref="mappingDestinationReferencesMapper" minOccurs="1" maxOccurs="1">
                  <xsd:annotation>
                    <xsd:documentation>[Instance of MappingDestinationReferencesMapper needs to be serialized in full-form]</xsd:documentation>
                  </xsd:annotation>
                </xsd:element>
              </xsd:sequence>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
        <!-- Property: Name -->
        <xsd:attribute name="name" type="xsd:string" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingDestination Moniker -->
  <xsd:element name="mappingDestinationMoniker" type="MappingDestinationMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MappingDestinationMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MappingDestination instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingModelHasElements -->
  <xsd:element name="mappingModelHasElements" abstract="true" type="MappingModelHasElements" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MappingModelHasElements" abstract="true" >
    <xsd:annotation>
      <xsd:documentation>Embedding relationship between the Model and Elements</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end TypeElement -->
          <xsd:element ref="typeElement" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingModelHasElements Moniker -->
  <xsd:element name="mappingModelHasElementsMoniker" type="MappingModelHasElementsMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MappingModelHasElementsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MappingModelHasElements instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingModelHasMappers -->
  <xsd:element name="mappingModelHasMappers" type="MappingModelHasMappers" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MappingModelHasMappers">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end Mapper -->
          <xsd:element ref="mapper" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingModelHasMappers Moniker -->
  <xsd:element name="mappingModelHasMappersMoniker" type="MappingModelHasMappersMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MappingModelHasMappersMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MappingModelHasMappers instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingModelHasNamespaces -->
  <xsd:element name="mappingModelHasNamespaces" type="MappingModelHasNamespaces" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MappingModelHasNamespaces">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end UsingNamespace -->
          <xsd:element ref="usingNamespace" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingModelHasNamespaces Moniker -->
  <xsd:element name="mappingModelHasNamespacesMoniker" type="MappingModelHasNamespacesMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MappingModelHasNamespacesMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MappingModelHasNamespaces instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TypeElementHasSMappings -->
  <xsd:element name="typeElementHasSMappings" type="TypeElementHasSMappings" substitutionGroup="core:modelElement" />
  <xsd:complexType name="TypeElementHasSMappings">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end MappingSource -->
          <xsd:element ref="mappingSource" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TypeElementHasSMappings Moniker -->
  <xsd:element name="typeElementHasSMappingsMoniker" type="TypeElementHasSMappingsMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="TypeElementHasSMappingsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TypeElementHasSMappings instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingSourceReferencesMapper -->
  <xsd:element name="mappingSourceReferencesMapper" type="MappingSourceReferencesMapper" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MappingSourceReferencesMapper">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end Mapper -->
          <xsd:element ref="mapperMoniker" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingSourceReferencesMapper Moniker -->
  <xsd:element name="mappingSourceReferencesMapperMoniker" type="MappingSourceReferencesMapperMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MappingSourceReferencesMapperMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MappingSourceReferencesMapper instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TypeElementHasDMappings -->
  <xsd:element name="typeElementHasDMappings" type="TypeElementHasDMappings" substitutionGroup="core:modelElement" />
  <xsd:complexType name="TypeElementHasDMappings">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end MappingDestination -->
          <xsd:element ref="mappingDestination" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- TypeElementHasDMappings Moniker -->
  <xsd:element name="typeElementHasDMappingsMoniker" type="TypeElementHasDMappingsMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="TypeElementHasDMappingsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for TypeElementHasDMappings instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingDestinationReferencesMapper -->
  <xsd:element name="mappingDestinationReferencesMapper" type="MappingDestinationReferencesMapper" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MappingDestinationReferencesMapper">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end Mapper -->
          <xsd:element ref="mapperMoniker" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MappingDestinationReferencesMapper Moniker -->
  <xsd:element name="mappingDestinationReferencesMapperMoniker" type="MappingDestinationReferencesMapperMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MappingDestinationReferencesMapperMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MappingDestinationReferencesMapper instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MapperHasItemMaps -->
  <xsd:element name="mapperHasItemMaps" type="MapperHasItemMaps" substitutionGroup="core:modelElement" />
  <xsd:complexType name="MapperHasItemMaps">
    <xsd:complexContent>
      <xsd:extension base="core:ModelElement">
        <xsd:sequence minOccurs="0" maxOccurs="1">
          <!-- Target end ItemMap -->
          <xsd:element ref="itemMap" minOccurs="1" maxOccurs="1">
            <xsd:annotation>
              <xsd:documentation>[Target role-player]</xsd:documentation>
            </xsd:annotation>
          </xsd:element>
        </xsd:sequence>
        <!-- Id -->
        <xsd:attribute name="Id" type="xsd:string">
          <xsd:annotation>
            <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- MapperHasItemMaps Moniker -->
  <xsd:element name="mapperHasItemMapsMoniker" type="MapperHasItemMapsMoniker" substitutionGroup="core:modelElementMoniker" />
  <xsd:complexType name="MapperHasItemMapsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for MapperHasItemMaps instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="core:ModelElementMoniker">
        <xsd:attribute name="Id" type="xsd:string" >
          <xsd:annotation>
            <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
          </xsd:annotation>
        </xsd:attribute>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  <!-- Enum TypeEnum -->
  <xsd:simpleType name="TypeEnum">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Enum"/>
      <xsd:enumeration value="Validator"/>
      <xsd:enumeration value="TypeConverter"/>
      <xsd:enumeration value="TypeReturn"/>
      <xsd:enumeration value="NoFilter"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum Kind -->
  <xsd:simpleType name="Kind">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Normal"/>
      <xsd:enumeration value="CustomStorage"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum CastType -->
  <xsd:simpleType name="CastType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Implicit">
        <xsd:annotation>
          <xsd:documentation>did not use any cast</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="IValueConverter">
        <xsd:annotation>
          <xsd:documentation>Uses a class that implements the interface iValueConverter</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Custom">
        <xsd:annotation>
          <xsd:documentation>You must be write the custom methode for convert the data</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Map">
        <xsd:annotation>
          <xsd:documentation>uses a other one mapper</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="None">
        <xsd:annotation>
          <xsd:documentation>no cast needed</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="IConverter">
        <xsd:annotation>
          <xsd:documentation>Uses a class that implements the interface iConverter</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Explicit">
        <xsd:annotation>
          <xsd:documentation>the cast explicit will be used ex : int a = (int)b;</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Collection">
        <xsd:annotation>
          <xsd:documentation>define the generation for the target is a collection</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="List">
        <xsd:annotation>
          <xsd:documentation>define the generation for the target is a List</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="ObservableCollection">
        <xsd:annotation>
          <xsd:documentation>define the generation for the target is a ObservableCollection</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="TypeConverter">
        <xsd:annotation>
          <xsd:documentation>the cast is a TypeConverter standard</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="Hashset">
        <xsd:annotation>
          <xsd:documentation>define the generation for the target is a hashset</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="EnumByValue"/>
      <xsd:enumeration value="EnumByLabel"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum MemberTypeEnum -->
  <xsd:simpleType name="MemberTypeEnum">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Property"/>
      <xsd:enumeration value="Field"/>
      <xsd:enumeration value="Undefine"/>
    </xsd:restriction>
  </xsd:simpleType>
  
  <!-- Enum PolicyNullValue -->
  <xsd:simpleType name="PolicyNullValue">
    <xsd:annotation>
      <xsd:documentation>define the policy if the the source value is null</xsd:documentation>
    </xsd:annotation>
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ReturnNull">
        <xsd:annotation>
          <xsd:documentation>If the source is null the target is null</xsd:documentation>
        </xsd:annotation>
      </xsd:enumeration>
      <xsd:enumeration value="ReturnNewItem"/>
    </xsd:restriction>
  </xsd:simpleType>
  
</xsd:schema>

